// DrawingNode.h: interface for the CDrawingNode class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DRAWINGNODE_H__35AF0C13_B957_4355_A5FC_A115A85B951B__INCLUDED_)
#define AFX_DRAWINGNODE_H__35AF0C13_B957_4355_A5FC_A115A85B951B__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000



/**
	CDrawingNode 클래스
	작업노드를 표현하는 추상클래스.
	인스턴스를 생성하기 위해서는 상속받은 클래스에서
	Draw()를 반드시 구현해야 하고,
	선택사항으로 OnMouseMove(), OnLButtonUp(), OnLButtonDown()들을 구현해줘야 한다.
	CFreeDraw, CDrawLine, CDrawRect 등의 클래스가 이 클래스를 상속받는다.
*/
class CDrawingNode  
{
protected:
	bool m_bComplete;			// 완료 상태. 처음엔 false, 모든 값을 다 넣었으면 true.
	COLORREF m_rgbForeground;	// 전경색
	COLORREF m_rgbBackground;	// 배경색
	int m_nPenWidth;			// 펜 굵기
	BOOL m_bFillOut;			// 색칠
	
public:
	bool IsComplete();			// 완료되었는지 체크.
	
	// 구현이 비어있는 가상함수들이다. 상속받은 클래스에서 구현해야 한다.
	virtual void OnMouseMove(CDC *pDC, UINT nFlags, CPoint point, CPoint scrolled);
	virtual void OnLButtonUp(CDC *pDC, UINT nFlags, CPoint point, CPoint scrolled);
	virtual void OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, CPoint scrolled);
	virtual void OnRButtonDown(CDC* pDC, UINT nFlags, CPoint point, CPoint scrolled);
	
	// 구현이 아예 없는 가상함수이다. 상속받은 클래스에서 구현해야 한다.
	virtual void Draw(CDC* pDC) = 0;
	
	CDrawingNode();
	virtual ~CDrawingNode();
};

#endif // !defined(AFX_DRAWINGNODE_H__35AF0C13_B957_4355_A5FC_A115A85B951B__INCLUDED_)
